package com.tx.axure.tkaxureweb;

import java.security.SecureRandom;
import java.util.Random;

public class RandomStringUtils {
    /**
     * 生成16位不重复的随机数，含数字+大小写
     * @param prefix 前缀字符
     * @return
     */
    public static String getGUID(String prefix) {
        StringBuilder uid = new StringBuilder(prefix);
        //产生16位的强随机数
        Random rd = new SecureRandom();
        for (int i = 0; i < 16; i++) {
            //产生0-2的3位随机数
            int type = rd.nextInt(3);
            switch (type) {
                case 0:
                    //0-9的随机数
                    uid.append(rd.nextInt(10));
         /*int random = ThreadLocalRandom.current().ints(0, 10)
         .distinct().limit(1).findFirst().getAsInt();*/
                    break;
                case 1:
                    //ASCII在65-90之间为大写,获取大写随机
                    uid.append((char) (rd.nextInt(25) + 65));
                    break;
                case 2:
                    //ASCII在97-122之间为小写，获取小写随机
                    uid.append((char) (rd.nextInt(25) + 97));
                    break;
                default:
                    break;
            }
        }
        return uid.toString();
    }


    //有的时候你需要生成一些随机的国内IP进行测试，代码如下
    public static String getRandomIp() {
        // 需要排除监控的ip范围

        int[][] range = {{607649792, 608174079}, // 36.56.0.0-36.63.255.255

                {1038614528, 1039007743}, // 61.232.0.0-61.237.255.255

                {1783627776, 1784676351}, // 106.80.0.0-106.95.255.255

                {2035023872, 2035154943}, // 121.76.0.0-121.77.255.255

                {2078801920, 2079064063}, // 123.232.0.0-123.235.255.255

                {-1950089216, -1948778497}, // 139.196.0.0-139.215.255.255

                {-1425539072, -1425014785}, // 171.8.0.0-171.15.255.255

                {-1236271104, -1235419137}, // 182.80.0.0-182.92.255.255

                {-770113536, -768606209}, // 210.25.0.0-210.47.255.255

                {-569376768, -564133889}, // 222.16.0.0-222.95.255.255

        };

        Random rdint = new Random();

        int index = rdint.nextInt(10);

        String ip = num2ip(range[index][0] + new Random().nextInt(range[index][1] - range[index][0]));

        return ip;

    }

    /*

     * 将十进制转换成IP地址

     */

    public static String num2ip(int ip) {

        int[] b = new int[4];

        String x = "";

        b[0] = (int) ((ip >> 24) & 0xff);

        b[1] = (int) ((ip >> 16) & 0xff);

        b[2] = (int) ((ip >> 8) & 0xff);

        b[3] = (int) (ip & 0xff);

        x = Integer.toString(b[0]) + "." + Integer.toString(b[1]) + "." + Integer.toString(b[2]) + "." + Integer.toString(b[3]);

        return x;

    }


    public static void main(String[] args) {
//        System.out.println(getGUID("PZ"));
        //生成10个16位随机数
//        for (int i = 0; i < 10; i++) {
//            System.out.println(getGUID("PZ"));
//        }

        //生成10个ip
//        for (int i = 0; i < 10; i++) {
//            System.out.println(getRandomIp());
//        }
    }
}
